home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ftp.cs.arizona.edu
/
ftp.cs.arizona.edu.tar
/
ftp.cs.arizona.edu
/
icon
/
newsgrp
/
group97a.txt
/
000083_icon-group-sender _Thu Mar 13 14:53:19 1997.msg
< prev
next >
Wrap
Internet Message Format
|
2000-09-20
|
5KB
Received: by cheltenham.cs.arizona.edu; Fri, 14 Mar 1997 10:40:05 MST
To: icon-group@cs.arizona.edu
Date: Thu, 13 Mar 1997 14:53:19 -0500
From: Jan Galkowski <jan@digicomp.com>
Message-Id: <33285B2F.41C67EA6@digicomp.com>
Organization: Digicomp Research Corporation
Sender: icon-group-request@cs.arizona.edu
References: <Pine.SGI.3.95.970305103012.2721A-100000@shellx.best.com>, <01bc2d80$5cac97d0$5f030514@dschauma>
Subject: Re: Recursive directory traversal in Icon
Errors-To: icon-group-errors@cs.arizona.edu
Status: RO
Content-Length: 4485
Dave Schaumann wrote:
>
> Brian Rogoff <bpr@best.com> wrote in article
> <Pine.SGI.3.95.970305103012.2721A-100000@shellx.best.com>...
> > Hi,
> > I've been reading the Icon web references, trying to decide if I
> > should forsake Perl in favor of Icon, and I have two questions.
> >
[snip]
> > (2) Why no module system?
While it speculating on intent may be interesting, it's usually a waste
of time. Better, IMO, is looking at the product and seeing what it has
and provides and what it doesn't. A "module system" is essentially a
device for managing globs of text, naming them, and performing controlled
substitutions upon them. (I don't mean "glob" in any Unix-ish or Perl-ish
sense.) To only slightly exaggerate, there's nothing in any "module
system" which can't be modelled in a proper implementation of the lambda
calculus, e.g., in SCHEME. So, one possible explanation is that a
"module system" is in some important sense excess baggage.
[The idea of using the lambda calculus for a "macro level language" isn't
original-- Peter Henderson and a coworker documented such a system for
reconstructing a very large and old FORTRAN program someplace in
_Software: Practise and Experience_ in the mid-'80s.]
>
> I can't answer this directly. However, there is Idol, which has been
> described
> as "Object Oriented Icon". That's pretty much all I know about it, so I
> don't
> know if it supports modules. I assume that "Object Oriented" means
> inheritence,
> which means classes, which means some form of encapsulation/data hiding...
>
> I agree with your point, though. Another big weakness of Icon is that
> there's
> just too much stuff that goes in the global name space.
>
With Icon's power and support of functions and procedures as first-class
objects, I wonder whether when we all -- and I very much include myself --
feel the pressure for adding more to Icon, we just aren't being
imaginative enough in using the tool we're given. Yes, we're products of
a community of programming artists and so fads and traditions weigh
heavily upon our practice. But Icon isn't a run-of-the-mill language
by any means, and it is freed of many of the constraints which the usual
languages are. C.A.R.Hoare (I believe) once wrote a position paper on
the then-evolving programming language Ada entitled "Generalzing Ada
by removing limitations".
I'm investing in this post so heavily because I am on a search for such
a means of expression which is strictly supported by the existing
Version 9.3 of Icon, yet addresses some of these concerns regarding
big programs and modules and all that. In fact, one of my reasons
for asking after people's "biggest Icon programs" was to see how far
people had carried Icon itself.
One could, for example, without that much effort and _without_
clobbering the problem by using excessive string invocation, imitate
all the packaging and generic facilities of Ada95, leaving aside
Ada's tasking facilities for the moment. (They could be modelled,
too, but that discussion, I believe, degenerates into one over
what constitutes an adequate simulation of asychronicity.)
Similarly, there really is no compelling reason to include events
and event-handlers in Icon simply because one has popular languages
like Tcl/Tk, Visual Basic, etc., which offer built-in events and
support a certain style of GUI programming. In the small, one can
imitate these facilities and in the large I really think that style
of GUI design deserves challenging: Not all applications are Web
pages, after all, and introducing problems of synchronization
and data sharing in contexts which really doesn't need them
hardly seems like progress. Besudes, at some level, Tcl/Tk and
Visual Basic embody a polling loop in their design, even if it
is a machine interrupt handler. At least Icon provides an
explicit one.
I'm sorry for going on so long, but I invite people to challenge
themselves to think how clear and neat expressions of what they
might want in this area could be expressed in the _existing_
Icon language. This isn't because the Icon definition would
be that hard to change, but because IMO programming languages
are supposed to be tools to think with creatively, not be simply
a sugar-coated subroutine library.
> -Dave
--
Jan Theodore Galkowski,
developer, tool & numerical methods elf
Digicomp Research Corporation,
Ithaca, NY 14850-5720
jan@digicomp.com
(also jtgalkowski@worldnet.att.net)